package start;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mysql.jdbc.PreparedStatement;

public class sql {
	private static Connection conn = null;
	// Hostname
	private static String dbHost = "piris-online-shop.de";
	// Port -- Standard: 3306
	private static String dbPort = "3306";
	// Datenbankname
	private static String database = "project";
	// Datenbankuser
	private static String dbUser = "piris-online-sho";
	// Datenbankpasswort
	private static String dbPassword = "*******";

	private sql() {
		try {
			// Datenbanktreiber für ODBC Schnittstellen laden.
			// Für verschiedene ODBC-Datenbanken muss dieser Treiber
			// nur einmal geladen werden.
			Class.forName("com.mysql.jdbc.Driver");
			// Verbindung zur ODBC-Datenbank 'sakila' herstellen.
			// Es wird die JDBC-ODBC-Brücke verwendet.
			conn = DriverManager.getConnection("jdbc:mysql://" + dbHost + ":"
					+ dbPort + "/" + database + "?" + "user=" + dbUser + "&"
					+ "password=" + dbPassword);
		} catch (ClassNotFoundException e) {
			System.out.println("Treiber nicht gefunden");
		} catch (SQLException e) {
			System.out.println("Connect nicht moeglich :(");
		}
	}

	private static Connection getInstance() {
		if (conn == null)
			new sql();
		return conn;
	}

	/**
	 * Schreibt die Namensliste in die Konsole
	 */
	public static void printNameList() {
		conn = getInstance();
		if (conn != null) {
			// Anfrage-Statement erzeugen.
			Statement query;
			try {
				query = conn.createStatement();
				// Ergebnistabelle erzeugen und abholen.
				String sql = "SELECT first_name, last_name FROM person "
						+ "ORDER BY last_name";
				ResultSet result = query.executeQuery(sql);
				// Ergebnissätze durchfahren.
				while (result.next()) {
					String first_name = result.getString("first_name"); // Alternativ:
																		// result.getString(1);
					String last_name = result.getString("last_name"); // Alternativ:
																		// result.getString(2);
					String name = last_name + ", " + first_name;
					System.out.println(name);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * @return 
	 * 
	 */
	public static String anzahlAuslesen() {
		conn = getInstance();
		String anzahl = "0";
		if (conn != null) {
			// Anfrage-Statement erzeugen.
			Statement query;
			try {
				query = conn.createStatement();
				// Ergebnistabelle erzeugen und abholen.
				String sql = "SELECT count(*) FROM person";
				ResultSet result = query.executeQuery(sql);
				while (result.next()) {
					anzahl = result.getString(1);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return anzahl;
	}
	
	/**
	 * Fügt einen eintrag an
	 */
	public static void addNameList(String first_name, String last_name) {
		conn = getInstance();
		if (conn != null) {
			try {
				// Ergebnistabelle erzeugen und abholen.
				String sql = "INSERT INTO person(first_name,last_name) VALUES(?, ?)";
				PreparedStatement preparedStatement = (PreparedStatement) conn.prepareStatement(sql);
				preparedStatement.setString(1, first_name);
				preparedStatement.setString(2, last_name);
				preparedStatement.executeUpdate();
				
				
				// Ergebnissätze durchfahren.
			
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
